home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / dalla rivista / amiga.free / sorgenti vari / wolfedit2 2.0.4 source.sit / WolfEdit2 2.0.4 Source / UImagePalette.p < prev    next >
Text File  |  1995-10-15  |  2KB  |  99 lines

  1. unit UImagePalette;
  2.  
  3. interface
  4.  
  5. implementation
  6.     uses
  7.         UList, UEditArt;
  8.  
  9.     procedure TImagePalette.IImagePalette (itsCols, itsNumItems: integer);
  10.         var
  11.             itsRows: integer;
  12.     begin
  13.         itsRows := (itsNumItems + (itsCols - 1)) div itsCols;
  14.         IList(20, 20, itsCols, itsRows, 1, []);
  15.         fNumItems := itsNumItems;
  16.     end;
  17.  
  18.     procedure TImagePalette.DrawCell (cell: Point; r: Rect; var hilite: boolean);
  19.         var
  20.             n: integer;
  21.             oldPen: PenState;
  22.     begin
  23.         n := ItemNumber(cell);
  24.         if n >= 0 then begin
  25.                 if ItemSelectable(n) then begin
  26.                         InsetRect(r, 2, 2);
  27.                         DrawImage(n, r);
  28.                     end
  29.                 else begin
  30.                         GetPenState(oldPen);
  31.                         PenNormal;
  32.                         MoveTo(r.left, r.top);
  33.                         LineTo(r.right, r.bottom);
  34.                         MoveTo(r.right, r.top);
  35.                         LineTo(r.left, r.bottom);
  36.                         SetPenState(oldPen);
  37.                     end;
  38.             end
  39.         else
  40.             EraseRect(r);
  41.     end;
  42.  
  43.     procedure TImagePalette.ChangeCellHilite (cell: Point; hilite: boolean);
  44.         var
  45.             r: Rect;
  46.     begin
  47.         Focus;
  48.         CellToRect(cell, r);
  49.         PenNormal;
  50.         PenSize(2, 2);
  51.         PenMode(patXor);
  52.         FrameRect(r);
  53.     end;
  54.  
  55.     procedure TImagePalette.SetSelectionRect (newSel: Rect);
  56.         var
  57.             item: integer;
  58.     begin
  59.         item := ItemNumber(newSel.topLeft);
  60.         if (item >= 0) & ItemSelectable(item) then begin
  61.                 inherited SetSelectionRect(newSel);
  62.                 ItemSelected(item);
  63.             end;
  64.     end;
  65.  
  66.     procedure TImagePalette.DrawImage (itemNo: integer; r: Rect);
  67.     begin
  68.     {Override this}
  69.     end;
  70.  
  71.     function TImagePalette.ItemNumber (cell: Point): integer;
  72.         var
  73.             n: integer;
  74.     begin
  75.         n := cell.v * fDimensions.right + cell.h;
  76.         if (n < 0) | (n >= fNumItems) then
  77.             n := -1;
  78.         ItemNumber := n;
  79.     end;
  80.  
  81.     procedure TImagePalette.ItemSelected (itemNum: integer);
  82.     begin
  83.         fDialog.SelectArt(itemNum);
  84.     end;
  85.  
  86.     procedure TImagePalette.InvalidateItem (itemNo: integer);
  87.         var
  88.             cell: Point;
  89.     begin
  90.         SetPt(cell, itemNo mod fDimensions.right, itemNo div fDimensions.right);
  91.         InvalidateCell(cell);
  92.     end;
  93.  
  94.     function TImagePalette.ItemSelectable (item: integer): boolean;
  95.     begin
  96.         ItemSelectable := true;
  97.     end;
  98.  
  99. end.